home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2004 April / Gamestar_61_2004-04_dvdb.iso / DVDStar / Editace / hltp.exe / {app} / Source Code / MAP Viewer / MainForm.h < prev    next >
C/C++ Source or Header  |  2003-10-09  |  7KB  |  242 lines

  1. /*
  2. Half-Life MAP viewing utility.
  3. Copyright (C) 2003  Ryan Samuel Gregg
  4.  
  5. This program is free software; you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation; either version 2 of the License, or
  8. (at your option) any later version.
  9.  
  10. This program is distributed in the hope that it will be useful,
  11. but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. GNU General Public License for more details.
  14.  
  15. You should have received a copy of the GNU General Public License
  16. along with this program; if not, write to the Free Software
  17. Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  18. */
  19.  
  20. #pragma once
  21.  
  22. #using <System.Drawing.dll>
  23. #using <System.Windows.Forms.dll>
  24.  
  25. using namespace System::ComponentModel;
  26. using namespace System::Drawing;
  27. using namespace System::Windows::Forms;
  28. using namespace System::IO;
  29.  
  30. #include "Types.h"
  31. #include "Engine.h"
  32. #include "MAPLoader.h"
  33. #include "PTSLoader.h"
  34. #include "TextureManager.h"
  35. #include "WorldObject.h"
  36. #include "World.h"
  37. #include "Entity.h"
  38. #include "Brush.h"
  39. #include "Face.h"
  40. #include "ArgVal.h"
  41. #include "PointFile.h"
  42.  
  43. #include "AboutForm.h"
  44.  
  45. namespace WorldObjectType
  46. {
  47.     enum WorldObjectType { Entity, Brush, Face };
  48. }
  49.  
  50. __abstract __gc class CWorldObjectTreeNode : public TreeNode
  51. {
  52. private:
  53.     CWorldObject *WorldObject;
  54.     WorldObjectType::WorldObjectType eWorldObjectType;
  55.  
  56. public:
  57.     CWorldObjectTreeNode(String *Name, CWorldObject *WorldObject, WorldObjectType::WorldObjectType eWorldObjectType)
  58.     {
  59.         this->Text = Name;
  60.         this->WorldObject = WorldObject;
  61.         this->eWorldObjectType = eWorldObjectType;
  62.     }
  63.  
  64.     CWorldObject *Selected()
  65.     {
  66.         return WorldObject;
  67.     }
  68.  
  69.     WorldObjectType::WorldObjectType GetType()
  70.     {
  71.         return eWorldObjectType;
  72.     }
  73. };
  74.  
  75. __gc class CEntityTreeNode : public CWorldObjectTreeNode
  76. {
  77. public:
  78.     CEntityTreeNode(String *Name, CWorldObject *WorldObject) : CWorldObjectTreeNode(Name, WorldObject, WorldObjectType::Entity)
  79.     {
  80.         
  81.     }
  82. };
  83.  
  84. __gc class CBrushTreeNode : public CWorldObjectTreeNode
  85. {
  86. public:
  87.     CBrushTreeNode(String *Name, CWorldObject *WorldObject) : CWorldObjectTreeNode(Name, WorldObject, WorldObjectType::Brush)
  88.     {
  89.         
  90.     }
  91. };
  92.  
  93. __gc class CFaceTreeNode : public CWorldObjectTreeNode
  94. {
  95. public:
  96.     CFaceTreeNode(String *Name, CWorldObject *WorldObject) : CWorldObjectTreeNode(Name, WorldObject, WorldObjectType::Face)
  97.     {
  98.          
  99.     }
  100. };
  101.  
  102. __gc class CMainForm : public Form
  103. {
  104. private:
  105.     bool bCloseing;
  106.     String *sStartupMAP;
  107.  
  108.     ArrayList *RecentFiles;
  109.  
  110.     CEngine *Engine;
  111.     CMAPLoader *MAPLoader;
  112.     CPTSLoader *PTSLoader;
  113.     CConfig *Config;
  114.  
  115.     CAboutForm *AboutForm;
  116.  
  117.     ::MainMenu *mnuMainMenu;
  118.  
  119.     ::MenuItem *cmdFile;
  120.     ::MenuItem *cmdOpen;
  121.     ::MenuItem *cmdFileSep1;
  122.     ::MenuItem *cmdRecentFiles;
  123.     ::MenuItem *cmdFileSep2;
  124.     ::MenuItem *cmdExit;
  125.  
  126.     ::MenuItem *cmdView;
  127.     ::MenuItem *cmdTextured;
  128.     ::MenuItem *cmdSolid;
  129.     ::MenuItem *cmdWireFrame;
  130.     ::MenuItem *cmdPoints;
  131.     ::MenuItem *cmdViewSep1;
  132.     ::MenuItem *cmdDrawSpecialTextures;
  133.     ::MenuItem *cmdDrawSelection;
  134.     ::MenuItem *cmdDrawPointFile;
  135.     ::MenuItem *cmdViewSep2;
  136.     ::MenuItem *cmdOutlineScene;
  137.     ::MenuItem *cmdLightScene;
  138.     ::MenuItem *cmdViewSep3;
  139.     ::MenuItem *cmdFog;
  140.     ::MenuItem *cmdViewSep4;
  141.     ::MenuItem *cmdTextureFilter;
  142.     ::MenuItem *cmdNonMipmapped;
  143.     ::MenuItem *cmdMipmapped;
  144.     ::MenuItem *cmdNearest;
  145.     ::MenuItem *cmdLinear;
  146.     ::MenuItem *cmdMipNearest;
  147.     ::MenuItem *cmdMipLinear;
  148.     ::MenuItem *cmdMipBilinear;
  149.     ::MenuItem *cmdMipTrilinear;
  150.     ::MenuItem *cmdMipIsotropic;
  151.     ::MenuItem *cmdMipAnisotropic;
  152.  
  153.     ::MenuItem *cmdPointFile;
  154.     ::MenuItem *cmdLoadPointFile;
  155.     ::MenuItem *cmdUnloadPointFile;
  156.  
  157.     ::MenuItem *cmdHelp;
  158.     ::MenuItem *cmdAbout;
  159.  
  160.     ::OpenFileDialog *dlgOpenMAPFile;
  161.     ::OpenFileDialog *dlgOpenPTSFile;
  162.  
  163.     ::StatusBar *barStatusMain;
  164.  
  165.     ::Panel *pnlSide;
  166.     ::Panel *pnlMain;
  167.     ::Panel *pnlBottom;
  168.  
  169.     ::TreeView *treWorld;
  170.     ::Splitter *splProperties;
  171.     ::ListView *lstProperties;
  172.  
  173.     ::Splitter *splTree;
  174.  
  175.     ::PictureBox *pic3D;
  176.  
  177.     ::Splitter *splConsole;
  178.  
  179.     ::CRichTextBox *txtConsole;
  180.  
  181. public:
  182.     CMainForm(String *sStartupMAP, CConfig *Config);
  183.  
  184. private:
  185.     void LoadWorld(String *sFileName);
  186.     void LoadPointFile(String *sFileName);
  187.     void UnloadPointFile();
  188.     void BuildTree(CWorld *World);
  189.  
  190.     void AddRecentFile(String *sFile);
  191.     void UpdateRecentFiles();
  192.  
  193.     void Exit();
  194.     
  195.     void CMainForm_Load(::Object *sender, ::EventArgs *e);
  196.     void CMainForm_Closeing(::Object *sender, ::CancelEventArgs *e);
  197.  
  198.     void pic3D_Resize(::Object *sender, ::EventArgs *e);
  199.     void pic3D_Paint(::Object *sender, ::PaintEventArgs *e);
  200.     void pic3D_MouseMove(::Object *sender, ::MouseEventArgs *e);
  201.     void pic3D_MouseDown(::Object *sender, ::MouseEventArgs *e);
  202.     void pic3D_MouseUp(::Object *sender, ::MouseEventArgs *e);
  203.     void pic3D_KeyDown(::Object *sender, ::KeyEventArgs *e);
  204.     void pic3D_KeyUp(::Object *sender, ::KeyEventArgs *e);
  205.  
  206.     void treWorld_AfterSelect(::Object *sender, ::TreeViewEventArgs *e);
  207.     void lstProperties_Resize(::Object *sender, ::EventArgs *e);
  208.  
  209.     void cmdOpen_Click(::Object *sender, ::EventArgs *e);
  210.     void cmdRecentFile_Click(::Object *sender, ::EventArgs *e);
  211.     void cmdExit_Click(::Object *sender, ::EventArgs *e);
  212.  
  213.     void cmdTextured_Click(::Object *sender, ::EventArgs *e);
  214.     void cmdSolid_Click(::Object *sender, ::EventArgs *e);
  215.     void cmdWireFrame_Click(::Object *sender, ::EventArgs *e);
  216.     void cmdPoints_Click(::Object *sender, ::EventArgs *e);
  217.     void cmdDrawSpecialTextures_Click(::Object *sender, ::EventArgs *e);
  218.     void cmdDrawSelection_Click(::Object *sender, ::EventArgs *e);
  219.     void cmdDrawPointFile_Click(::Object *sender, ::EventArgs *e);
  220.     void cmdOutlineScene_Click(::Object *sender, ::EventArgs *e);
  221.     void cmdLightScene_Click(::Object *sender, ::EventArgs *e);
  222.     void cmdFog_Click(::Object *sender, ::EventArgs *e);
  223.  
  224.     void cmdNearest_Click(::Object *sender, ::EventArgs *e);
  225.     void cmdLinear_Click(::Object *sender, ::EventArgs *e);
  226.     void cmdMipNearest_Click(::Object *sender, ::EventArgs *e);
  227.     void cmdMipLinear_Click(::Object *sender, ::EventArgs *e);
  228.     void cmdMipBilinear_Click(::Object *sender, ::EventArgs *e);
  229.     void cmdMipTrilinear_Click(::Object *sender, ::EventArgs *e);
  230.     void cmdMipIsotropic_Click(::Object *sender, ::EventArgs *e);
  231.     void cmdMipAnisotropic_Click(::Object *sender, ::EventArgs *e);
  232.  
  233.     void cmdLoadPointFile_Click(::Object *sender, ::EventArgs *e);
  234.     void cmdUnloadPointFile_Click(::Object *sender, ::EventArgs *e);
  235.  
  236.     void cmdAbout_Click(::Object *sender, ::EventArgs *e);
  237.  
  238.     void GetHalfLifePath();
  239.     bool WriteConfigFile(String *sFile);
  240.     bool LoadConfigFile(String *sFile);
  241.     bool ProcessLine(String *sLine, String **sArg, String **sVal);
  242. };